

// Decompiler options: packimports(3) fieldsfirst ansi 
// Source File Name:   ch.java

package com.zelix;

import java.util.*;

// Referenced classes of package com.zelix:
//            fh, ih, dd, tb, 
//            re, lt, mt, py, 
//            qy

abstract class ch
{

    ih a;
    int b;
    int m;
    Hashtable c;
    Hashtable d;
    Hashtable e;
    Hashtable f;
    Hashtable g;
    private Hashtable h;
    private qy i;
    private Hashtable j;
    re k;
    dd l;
    private static String z[];

    ch(ih ih1, Hashtable hashtable, qy qy1, Hashtable hashtable1, int i1, int j1)
    {
        e = new Hashtable();
        a = ih1;
        h = hashtable;
        j = hashtable1;
        b = i1;
        m = j1;
        c = ih1.g;
        d = ih1.h;
        f = ih1.j;
        g = ih1.i;
        l = ih1.c;
        k = ih1.e;
        i = qy1;
    }

    ArrayList a(String s, String s1)
    {
        ArrayList arraylist;
        String s3;
        Vector vector;
        int j1;
        boolean flag;
        String s2;
label0:
        {
            flag = tb.b;
            arraylist = new ArrayList();
            if(s == null || i == null)
                break MISSING_BLOCK_LABEL_160;
            if(s1.length() > 0)
            {
                s2 = (String)h.get(s1);
                if(!flag)
                    break label0;
            }
            s2 = s1;
        }
        int i1 = s.lastIndexOf('/');
        s3 = s.substring(i1 + 1);
        vector = i.d(s2);
        if(vector == null)
            break MISSING_BLOCK_LABEL_154;
        j1 = 0;
        if(!flag) goto _L2; else goto _L1
_L1:
        String s4 = (String)vector.get(j1);
        arraylist.add(s4 + "/" + s3);
        j1++;
_L2:
        if(j1 < vector.size()) goto _L1; else goto _L3
_L3:
        if(!flag)
            break MISSING_BLOCK_LABEL_160;
        arraylist.add(s);
        return arraylist;
    }

    abstract String a(fh fh1);

    private String a(String s)
    {
        String s1;
label0:
        {
            int i1 = Math.max(s.lastIndexOf("$"), s.lastIndexOf("+"));
            if(i1 > -1)
            {
                s1 = s.substring(i1, i1 + 1);
                if(!tb.b)
                    break label0;
            }
            s1 = "";
        }
        return s1;
    }

    abstract String a(fh fh1, String s, HashMap hashmap, String s1, py py1);

    final String a(fh fh1, HashMap hashmap)
        throws tb
    {
        py py1;
        String s;
        String s1;
        mt mt1;
        fh fh2;
        String s4;
        boolean flag;
        flag = tb.b;
        py1 = null;
        s = "";
        s1 = fh1.d();
        mt1 = fh1.c();
        if(b != 0 || !fh1.u() || !fh1.r())
            break MISSING_BLOCK_LABEL_433;
        fh2 = fh1.g();
        s4 = fh2.d();
        if(g.get(s4) == null)
            throw new tb(z[4] + lt.a(s4) + z[1] + lt.a(s1) + "'");
        if(hashmap == null) goto _L2; else goto _L1
_L1:
        Iterator iterator = hashmap.keySet().iterator();
        if(!flag) goto _L4; else goto _L3
_L3:
        fh fh3 = (fh)iterator.next();
        mt mt3 = fh3.c();
        if(!f.containsKey(fh3.d()) && !c.containsKey(mt3))
            return null;
_L4:
        if(iterator.hasNext()) goto _L3; else goto _L2
_L2:
        String s6;
label0:
        {
            Object obj;
            if((obj = f.get(s4)) == null)
            {
                if(c.get(fh2.c()) == null)
                    return null;
                s6 = s4;
                if(!flag)
                    break label0;
            }
            s6 = (String)obj;
        }
        String s8 = mt1.ab();
        if(s8 != null)
        {
            int i1 = s4.length();
            int j1 = s1.length();
            int k1 = s8.length();
            if(j1 - k1 > i1)
            {
                String s13 = s1.substring(i1, j1 - k1);
                s = s6 + s13;
                s1 = s8;
                if(!flag)
                    break MISSING_BLOCK_LABEL_722;
            }
            String s14 = a(s1);
            s = s6 + s14;
            s1 = s1.substring(s4.length() + 1);
            if(!flag)
                break MISSING_BLOCK_LABEL_722;
        }
        String s10 = a(s1);
        s = s6 + s10;
        s1 = s1.substring(s4.length() + 1);
        if(!flag)
            break MISSING_BLOCK_LABEL_722;
        py1 = l.b(fh1.c());
        if(py1 != null)
        {
            String s2 = (String)py1.b();
            String s5 = (String)py1.c();
            mt mt2 = (mt)py1.a();
            if(mt2 != null)
            {
                String s7 = mt2.j();
                String s9 = null;
                if((s9 = (String)f.get(s7)) == null)
                {
                    if(c.get(mt2) == null)
                        return null;
                    String s11 = b(fh1.c().j()) + s2 + c(s7) + s5;
                    if(!a(s1, s11, true))
                        throw new tb(z[0] + fh1.c().l() + z[2]);
                    else
                        return s11;
                }
                String s12 = b(fh1.c().j()) + s2 + c(s9) + s5;
                if(!a(s1, s12))
                    throw new tb(z[0] + fh1.c().l() + z[3]);
                else
                    return s12;
            }
        }
        String s3 = a(fh1, s, hashmap, s1, py1);
        return s3;
    }

    String b(fh fh1)
    {
        String s = fh1.d();
        int i1 = s.lastIndexOf('/');
        if(i1 != -1)
        {
            String s1 = b(s);
            String s2 = s.substring(i1 + 1);
            String s3 = s1 + s2;
            if(s3.equals(s))
                return null;
            else
                return s3;
        } else
        {
            return null;
        }
    }

    String b(String s)
    {
        String s1;
label0:
        {
            s1 = "";
            int i1 = s.lastIndexOf('/');
            if(i1 == -1)
                break label0;
            if(h != null)
            {
                s1 = s.substring(0, i1);
                s1 = (String)h.get(s1);
                if(s1.length() <= 0)
                    break label0;
                s1 = s1 + "/";
                if(!tb.b)
                    break label0;
            }
            s1 = s.substring(0, i1 + 1);
        }
        return s1;
    }

    int a()
    {
        return m;
    }

    int b()
    {
        return b;
    }

    static String c(String s)
    {
        int i1 = s.lastIndexOf('/');
        if(i1 == -1)
            return s;
        else
            return s.substring(i1 + 1);
    }

    final boolean a(String s, String s1)
    {
        return a(s, s1, false);
    }

    final boolean a(String s, String s1, boolean flag)
    {
        if(k != null && k.n(s1))
            return false;
        if(d.get(s1) != null)
            return false;
        if(e.get(s1) != null)
            return false;
        if(j.get(s1) != null)
            return false;
        return flag || !lt.h(s).equals(lt.h(s1));
    }

    private static String z(char[] chs) {
        byte key = 0;
        for (int i = 0; i < chs.length; i++) {
            switch (i % 5) {
                case 0:
                    key =0x5c;
                    break;
                case 1:
                    key =58;
                    break;
                case 2:
                    key =63;
                    break;
                case 3:
                    key =10;
                    break;
                case 4:
                    key =21;
                    break;
            }
            chs[i] ^= key;
        }
        return new String(chs).intern();
    }

    static
    {
        String as[];
        as = new String[5];
        as[0] = "\031HMeg|HZdt1SQm5";
        as[1] = "{\032Yeg|\035";
        as[2] = "r\032|bp?Q\0376y5TT45/_^xv4\032Oka4I\021*=m\023";
        as[3] = "r\032|bp?Q\0376y5TT45/_^xv4\032Oka4I\021*=n\023";
        as[4] = "\021SLy|2]\037e`(_M*v0[Ly5f\032";
        for(int i=0;i<as.length;i++){
            as[i] = z(as[i].toCharArray());
        }
        z = as;

    }
}